<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

</body>
<script>
    {
        // 1- 如何定义
        class Box {

        }

        const Desk = class {

        }
    }
    {
        // 2- class的本质（类型）是函数
        class Box {

        }

        console.log(typeof Box);// function
    }
    {
        // 3- 作用：实例化对象
        // class Box{
        //     userName = "zhangsan";// 实例属性
        //     constructor(userName,age) {
        //         this.age = age;// 实例属性
        //         this.userName = userName;
        //         console.log(this.userName)
        //     }
        // }
        // const obj = new Box("lisi",80);
        // console.log(obj);
    }
    {
        // 4- 使用原型对象
        // class Box{
        //     // 增加原型方法
        //     run(){
        //         console.log("run")
        //     }
        //     // 增加原型方法
        //     my(){
        //         console.log("my")
        //     }
        // }
        // // 增加原型方法
        // Box.prototype.fn = function(){
        //
        // }
        // const obj = new Box();
        // console.log(obj);
    }
    {
        // 5- 静态属性和方法
        // class Desk{
        //     static age = 1;
        //     static fn2 = function(){
        //         console.log("fn2");
        //     };
        //     static fn3(){
        //         console.log("fn3")
        //     }
        // }
        // Desk.userName = "zhangsan";
        // Desk.fn = function(){
        //     console.log(this.userName);
        // }
        // console.log(Desk.userName);
        // Desk.fn();
        //
        // console.log(Desk.age);
        //
        // Desk.fn2();
        // Desk.fn3();

    }
    {
        // 6- 继承
        class Desk {
            a = 1;
            b = 2;
            constructor(a,b) {
                this.a = a;
                this.b = b;
            }
            fn(){
                console.log("desk->fn",this.a,this.b)
            }
        }

        class Box extends Desk {
            // constructor(a,b) {
            //     super(a,b);
            // }
            fn(){
                console.log("box->fn");
                super.fn();
            }
        }
        const obj = new Box(10,20);
        // console.log(obj.a);
        // console.log(obj.b);
        // obj.fn();
        obj.fn();

    }
</script>
</html>